﻿//#include <iostream>
//#include <sys/mman.h>
//#include <fcntl.h>
//#include <unistd.h>
//#include <cstring>
//using namespace std;
//int main() {
//    int fd = open("test.txt", O_RDWR | O_CREAT, 0666);
//    if (fd == -1) {
//        perror("open");
//        return -1;
//    }
//    char* addr = (char*)mmap(nullptr, 1024, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
//    if (addr == MAP_FAILED) {
//        perror("mmap");
//        return -1;
//    }
//    close(fd);
//    pid_t pid = fork();
//    if (pid == -1) {
//        perror("fork");
//        return -1;
//    }
//    else if (pid == 0) {
//        // 子进程
//        strcpy(addr, "Hello, parent process!");
//        munmap(addr, 1024);
//    }
//    else {
//        // 父进程
//        sleep(1);
//        cout << addr << endl;
//        munmap(addr, 1024);
//    }
//    return 0;
//}

//#include <iostream>
//#include <fcntl.h>
//#include <unistd.h>
//#include <cstring>
//using namespace std;
//int main() {
//    int ret = mkfifo("test.fifo", 0666);
//    if (ret == -1) {
//        perror("mkfifo");
//        return -1;
//    }
//    int fd = open("test.fifo", O_RDWR);
//    if (fd == -1) {
//        perror("open");
//        return -1;
//    }
//    pid_t pid = fork();
//    if (pid == -1) {
//        perror("fork");
//        return -1;
//    }
//    else if (pid == 0) {
//        // 子进程
//        char buf[1024];
//        memset(buf, 0, sizeof(buf));
//        read(fd, buf, sizeof(buf));
//        cout << "Child process received: " << buf << endl;
//        close(fd);
//    }
//    else {
//        // 父进程
//        char* msg = "Hello, child process!";
//        write(fd, msg, strlen(msg));
//        close(fd);
//    }
//    return 0;
//}